/**
 *  方法的声明和使用：
 *      优点：
 *          提高代码的利用率
 *          方便维护，解耦
 *          有一定的封装的概念
 *      如何声明的：
 *          访问修饰符 返回值类型 方法名（参数列表）{
 *              方法体
 *          }
 *      访问修饰符：public static(静态的，不是每个方法都必须写)
 *      返回值类型：
 *          有返回值：类型可以是引用数据类型、基本数据类型
 *          无返回值：void
 *      方法名：命名规则同标识符的命名规则（字母数字下划线，数字不能开头；首字母小写；驼峰命名规则；见名知义）
 *      参数列表：同变量声明一样的
 *              数据类型 参数名,数据类型 参数名
 *  方法的调用：
 *      方法名([传参]);
 *      如果方法需要参数，就给他传参
 */
public class Demo04 {

    /**
     * 声明方法一：
     *      没有返回值类型
     *      没有参数
     */
    public static void add(){
        int num1 = 10;
        int num2 = 20;
        System.out.println(num1 + num2);
    }

    /**
     * 声明方法二：
     *      没有返回值类型
     *      有参数，这个参数我们称之为形参，只有当方法被调用了，它才会有值，方法才会被执行
     * @param num1
     * @param num2
     */
    public static void sub(int num1,int num2){
        System.out.println(num1 - num2);
    }

    /**
     * 声明方法三：
     *      有返回值类型，需要在方法体的逻辑上的最后一行，添加return + 返回的值
     *                  需要注意的是，返回的值，要与方法体上定义的返回值类型一致
     *      没有参数
     * @return
     */
    public static boolean isYear(){
//        return 0>1;

        if(1>0){
            return true;
        }else {
            return false;
        }
    }

    /**
     * 声明方法四：
     *      有返回值
     *      有参数
     * @param name
     * @return
     */
    public static String getStr(String name){
        return name+"abc";
    }

    public static void main(String[] args) {

        int num1 = 10;
        int num2 = 20;
        //方法的调用：
        add();

        //方法调用时，传递的参数，称之为实参
        sub(num1,num2);

        /*
            调用有返回值的方法的调用：
                可以将方法中的返回值，存放到一个变量当中
                注意，变量的数据类型要与返回值的数据类型要匹配
         */
        boolean flag = isYear();

        String str = getStr("tom");
    }


}
